/*
 * init.h
 *
 *  Created on: Jun 3, 2011
 *      Author: timothy
 */

#ifndef INIT_H
#define INIT_H

#include <stdio.h>
#include <stdlib.h>
#include <iostream>

// Uncomment this to merge the iterators. Use if code changes result in
//   load balancing issues. In practice, this results in a performance loss.
//#define SINGLE_ITERATOR

// Uncomment this to accumulate shingles before inserting. Use if code changes result
//   in increased shingle generation times. In practice, this results in a performance loss.
//#define ACCUMULATE_SHINGLES 10

// Comment out this line to parallelize on elements rather than on trials.
//   This implies SINGLE_ITERATOR
//#define PARALLEL_ON_TRIALS

// Comment this line out to remove self-self edges.
#define SELF_SELF_EDGES

// Comment this line out to individually allocate shingles.
#define BULK_ALLOCATE_SHINGLES 65536

// Comment this out to show timing breakdown. This will increase running time by about 40%.
//#define IGNORE_SMALL_TIMES

// Repurposes the tool to repair incomplete gel files.
//#define REPAIR_GRAPH


#ifdef PARALLEL_ON_TRIALS
#define SINGLE_ITERATOR
#endif

#define MAX_THREADS_DEBUG 128

typedef struct arg_vars_t {
	char infile_n[100];
	char outfile_n[100];
	unsigned int shingle_length;
	int num_trials;
	int success;
} arg_vars;

extern arg_vars *g_ArgVars;

arg_vars init_args(int argc, char **argv);

#endif
